//package com.snail.service;
//
//import com.fasterxml.jackson.core.JsonProcessingException;
//import com.snail.config.McpInputSchema;
//import com.snail.config.*;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Service;
//
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
///**
// * @author cici
// * @description mcp的服务实现
// * @date 2025/8/13 17:04
// */
//@Slf4j
//@Service
//@RequiredArgsConstructor
//public class McpService {
//    /**
//     * 获取可用的MCP工具列表
//     */
//    public List<McpTool> getAvailableTools() {
//        return List.of(
//                McpTool.builder()
//                        .name("search_products")
//                        .description("使用AI增强的语义搜索来查找相关商品")
//                        .inputSchema(McpInputSchema.builder()
//                                .type("object")
//                                .properties(Map.of(
//                                        "query", Map.of(
//                                                "type", "string",
//                                                "description", "用户的搜索查询，可以是自然语言描述"
//                                        ),
//                                        "page", Map.of(
//                                                "type", "integer",
//                                                "description", "页码，从0开始",
//                                                "default", 0
//                                        ),
//                                        "size", Map.of(
//                                                "type", "integer",
//                                                "description", "每页商品数量，默认10",
//                                                "default", 10
//                                        ),
//                                        "category", Map.of(
//                                                "type", "string",
//                                                "description", "商品分类过滤条件（可选）"
//                                        ),
//                                        "minPrice", Map.of(
//                                                "type", "number",
//                                                "description", "最低价格过滤条件（可选）"
//                                        ),
//                                        "maxPrice", Map.of(
//                                                "type", "number",
//                                                "description", "最高价格过滤条件（可选）"
//                                        )
//                                ))
//                                .required(List.of("query"))
//                                .build())
//                        .build(),
//
//                McpTool.builder()
//                        .name("analyze_search_intent")
//                        .description("分析用户搜索意图，提取关键词和相关概念")
//                        .inputSchema(McpInputSchema.builder()
//                                .type("object")
//                                .properties(Map.of(
//                                        "query", Map.of(
//                                                "type", "string",
//                                                "description", "用户的原始搜索查询"
//                                        )
//                                ))
//                                .required(List.of("query"))
//                                .build())
//                        .build()
//        );
//    }
//
//    /**
//     * 执行MCP工具调用
//     */
//    public McpToolResult executeTool(McpToolCall toolCall) {
//        try {
//            String toolName = toolCall.getName();
//            Map<String, Object> arguments = toolCall.getArguments();
//
//            log.info("执行MCP工具: {} with arguments: {}", toolName, arguments);
//
//            switch (toolName) {
//                case "search_products":
//                    return executeProductSearch(arguments);
//                case "analyze_search_intent":
//                    return executeIntentAnalysis(arguments);
//                default:
//                    return McpToolResult.builder()
//                            .content("未知的工具: " + toolName)
//                            .isError(true)
//                            .build();
//            }
//        } catch (Exception e) {
//            log.error("执行MCP工具时发生错误", e);
//            return McpToolResult.builder()
//                    .content("工具执行错误: " + e.getMessage())
//                    .isError(true)
//                    .build();
//        }
//    }
//
//    /**
//     * 执行商品搜索
//     */
//    private McpToolResult executeProductSearch(Map<String, Object> arguments) throws JsonProcessingException {
//        String query = (String) arguments.get("query");
//        Integer page = (Integer) arguments.getOrDefault("page", 0);
//        Integer size = (Integer) arguments.getOrDefault("size", 10);
//        String category = (String) arguments.get("category");
//        Double minPrice = arguments.get("minPrice") != null ?
//                ((Number) arguments.get("minPrice")).doubleValue() : null;
//        Double maxPrice = arguments.get("maxPrice") != null ?
//                ((Number) arguments.get("maxPrice")).doubleValue() : null;
//
//        var searchResult = productSearchService.searchWithAI(query, page, size, category, minPrice, maxPrice);
//
//        Map<String, Object> result = new HashMap<>();
//        result.put("query", query);
//        result.put("aiAnalysis", searchResult.getAiAnalysis());
//        result.put("products", searchResult.getProducts());
//        result.put("totalElements", searchResult.getTotalElements());
//        result.put("totalPages", searchResult.getTotalPages());
//        result.put("currentPage", page);
//        result.put("pageSize", size);
//
//        return McpToolResult.builder()
//                .content(objectMapper.writeValueAsString(result))
//                .isError(false)
//                .build();
//    }
//
//    /**
//     * 执行搜索意图分析
//     */
//    private McpToolResult executeIntentAnalysis(Map<String, Object> arguments) throws JsonProcessingException {
//        String query = (String) arguments.get("query");
//
//        var analysis = productSearchService.analyzeSearchIntent(query);
//
//        return McpToolResult.builder()
//                .content(objectMapper.writeValueAsString(analysis))
//                .isError(false)
//                .build();
//    }
//
//    /**
//     * 处理MCP请求
//     */
//    public McpResponse handleMcpRequest(McpRequest request) {
//        try {
//            switch (request.getMethod()) {
//                case "tools/list":
//                    return new McpResponse("2.0", request.getId(),
//                            Map.of("tools", getAvailableTools()), null);
//
//                case "tools/call":
//                    McpToolCall toolCall = objectMapper.convertValue(request.getParams(), McpToolCall.class);
//                    McpToolResult result = executeTool(toolCall);
//                    return new McpResponse("2.0", request.getId(), result, null);
//
//                default:
//                    return new McpResponse("2.0", request.getId(), null,
//                            new McpError(-32601, "Method not found: " + request.getMethod(), null));
//            }
//        } catch (Exception e) {
//            log.error("处理MCP请求时发生错误", e);
//            return new McpResponse("2.0", request.getId(), null,
//                    new McpError(-32603, "Internal error: " + e.getMessage(), null));
//        }
//    }
//}
